package com.indusfo.spc.mapper;

import com.indusfo.spc.pojo.Role;
import com.indusfo.spc.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户信息mapper文件
 * 
 * @author xiet 2018年11月23日 下午2:42:12
 */
public interface UserMapper {
	
	/**
	 * 	查询单个用户
	 * @param userId
	 * @return
	 */
	List<User> getUser(@Param("userId") Integer userId);
	
	/**
	 * 	查询所有用户
	 * @param user
	 * @return
	 */
	List<User> listUser(User user);

	/**
	 * 	查询所有用户   部门用户表
	 * @return
	 */
	List<User> queryUserByDepId(User user);

	List<User> listUserDep(User user);

	/**
	 * @Description: 根据用户名查询用户id
	 * @Params: [userName]
	 * @Returns: java.lang.Integer
	 * @author: 余家能
	 * @date: 2018/12/26 下午12:07
	 */
	Integer getUserIdByName(String userName);

	/**
	 * 	修改用户的状态（1启用，2删除，3停用）
	 *
	 * @param
	 * @return
	 */
	int deleteUser(@Param("userIds") Integer[] userIds, @Param("dataState") Integer dataState);

	/**
	 * 根据部门Id删除部门下的所有员工
	 * @param deptId
	 * @return
	 */
	int deleteUserBylDeptId(@Param("deptId") Integer deptId);
	/**
	 * 	查询分页总数
	 * @param user
	 * @return
	 */
	int countUser(User user);

	/**
	 * 	查询分页总数  部门下所有
	 * @param user
	 * @return
	 */
	int countUserByDepId(User user);
	
	/**
	 * 查询用户名
	 * @return
	 */
	int listUserCode(User user);
	
	/**
	 * 通过用户名查询
	 * @param user
	 * @return
	 */
	List<User> lU(User user);

	/**
	 * 新增用户信息
	 * @param user
	 * @return
	 */
	int insertUser(User user);

	/**
	 * 通过角色ID查询该角色未设置的用户
	 *
	 * @param role
	 * @return java.util.List<com.indusfo.spc.pojo.UserVO>
	 * @author xuz
	 * @date 2019/7/17 4:47 PM
	 */
    List<User> queryUserByRoleId(Role role);
    /**
     * 通过角色ID查询该角色未设置的用户数量
     *
     * @param role 
     * @return java.lang.Integer
     * @author xuz
     * @date 2019/7/17 4:54 PM
     */
    int queryCountsByRoleId(Role role);

    // 判断用户编码是否更改
	int judgeUserCode(User user);

	int updateByPrimaryKeySelective(User user);


  /**
   * @author: louk
   * @Description: 用户批量新增
   * @date: 2019/11/5 16:13
   *
   */
	int insertListUser(@Param("userList") List<User> userList);

  /*
 根据登录账户查询用户
 */
  User selectUserBycode(@Param("uesrCode") String uesrCode);
/*
   查询授权用户
  */
  List<User> selectByRole(Role role);
/*
   查询授权用户总数
  */
  int countUserByRole(Role role);

  User findUserById(@Param("userId") Integer userId);
}
